.. _rst-markup-content: Сервис контентов ================ Сервис контентов предназначен для загрузки и скачивания файлов. С помощью методов сервиса можно загрузить и скачать контент частями по 64 МБ. При этом сервис позволяет загружать большие файлы отчетов, можно работать с контентами до 30 ГБ. Каждому контенту присваивается свой идентификатор ``content-id``. Если нужно передать один и тот же файл в нескольких методах, его не нужно загружать повторно. Для этого в методах загрузки и получения контента черновиков, документооборотов в соответствующих моделях можно указать идентификатор контента ``content-id``. Все документы, которые появляются в документообороте, будут иметь в модели параметр ``content-id``. Это означает, что все документы от контролирующего органа также будут доступны для скачивания в сервисе контентов. Как это работает ---------------- .. _rst-markup-load: Загружаем файл в сервис контентов +++++++++++++++++++++++++++++++++ 1. Если документ больше 64 МБ, разбиваем на части по 64 МБ. 2. Вызываем метод :ref:`POST Upload`. Для загрузки контента необходимо передать заголовок ``Content-Range``. 3. Догружаем части контента методом :ref:`PUT UploadByParts`. Части контента не обязательно грузить в порядке очередности. Но в итоге все части контента должны быть переданы. 4. Передаем идентификатор контента в нужном методе, например, :ref:`добавление документа в черновик`. **Пример запроса загрузки контента** **Запрос** .. code-block:: http POST /v1/bd0cd3f6-315d-4f03-a9cc-3507f63265ed/contents HTTP/1.1 Authorization: Bearer Content-Type: application/octet-stream Content-Range: bytes 0-100/100 Контент передан в теле запроса **Ответ** .. code-block:: http HTTP/1.1 201 Created Content-Type: application/json; charset=utf-8 Content-Length: 100 { "id": "78b7d042-4f45-459e-bfe7-f1ba21a717b4" } .. _rst-markup-dowload: Скачиваем файл из сервиса контентов +++++++++++++++++++++++++++++++++++ 1. Получаем документ в черновике или документообороте. 2. Берем значение параметра ``content-id``. 3. Запрашиваем контент: :ref:`GET Download`. В запросе необходимо указать идентификатор контента ``content-id`` и задать байтовый диапазон части контента в параметре ``Range``. **Пример запроса получения контента** **Запрос** .. code-block:: http GET /v1/bd0cd3f6-315d-4f03-a9cc-3507f63265ed/contents/78b7d042-4f45-459e-bfe7-f1ba21a717b4 HTTP/1.1 Authorization: Bearer Content-Type: application/octet-stream Range: bytes 0-20/100 **Ответ** .. code-block:: http HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 21 Content-Range: bytes 0-20/100 <Файл/> ...